package com.zpark.entity.patients;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import lombok.Data;

/**
 * 健康评估报告表
 * @TableName health_report
 */
@TableName(value ="health_report")
@Data
public class HealthReport implements Serializable {
    /**
     * 报告ID
     */
    @TableId(value = "report_id", type = IdType.AUTO)
    private Long reportId;

    /**
     * 患者ID
     */
    @TableField(value = "patient_id")
    private Long patientId;

    /**
     * 患者姓名
     */
    @TableField(value = "patient_name")
    private String patientName;

    /**
     * 报告日期
     */
    @TableField(value = "report_date")
    private Date reportDate;

    /**
     * 报告状态(已完成/处理中/已取消)
     */
    @TableField(value = "report_status")
    private String reportStatus;

    /**
     * 血压值(mmHg)
     */
    @TableField(value = "blood_pressure")
    private String bloodPressure;

    /**
     * 血压状态
     */
    @TableField(value = "blood_pressure_status")
    private String bloodPressureStatus;

    /**
     * 心率(次/分)
     */
    @TableField(value = "heart_rate")
    private Integer heartRate;

    /**
     * 心率状态
     */
    @TableField(value = "heart_rate_status")
    private String heartRateStatus;

    /**
     * 血糖(mmol/L)
     */
    @TableField(value = "blood_sugar")
    private BigDecimal bloodSugar;

    /**
     * 血糖状态
     */
    @TableField(value = "blood_sugar_status")
    private String bloodSugarStatus;

    /**
     * 胆固醇(mmol/L)
     */
    @TableField(value = "cholesterol")
    private BigDecimal cholesterol;

    /**
     * 胆固醇状态
     */
    @TableField(value = "cholesterol_status")
    private String cholesterolStatus;

    /**
     * BMI值(kg/m²)
     */
    @TableField(value = "bmi")
    private BigDecimal bmi;

    /**
     * BMI状态
     */
    @TableField(value = "bmi_status")
    private String bmiStatus;

    /**
     * 生活方式建议1
     */
    @TableField(value = "lifestyle_suggestion1")
    private String lifestyleSuggestion1;

    /**
     * 生活方式建议2
     */
    @TableField(value = "lifestyle_suggestion2")
    private String lifestyleSuggestion2;

    /**
     * 生活方式建议3
     */
    @TableField(value = "lifestyle_suggestion3")
    private String lifestyleSuggestion3;

    /**
     * 饮食建议1
     */
    @TableField(value = "diet_suggestion1")
    private String dietSuggestion1;

    /**
     * 饮食建议2
     */
    @TableField(value = "diet_suggestion2")
    private String dietSuggestion2;

    /**
     * 饮食建议3
     */
    @TableField(value = "diet_suggestion3")
    private String dietSuggestion3;

    /**
     * 指标趋势数据
     */
    @TableField(value = "trend_data")
    private Object trendData;

    /**
     * 创建时间
     */
    @TableField(value = "created_at")
    private Date createdAt;

    /**
     * 更新时间
     */
    @TableField(value = "updated_at")
    private Date updatedAt;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;

    @Override
    public boolean equals(Object that) {
        if (this == that) {
            return true;
        }
        if (that == null) {
            return false;
        }
        if (getClass() != that.getClass()) {
            return false;
        }
        HealthReport other = (HealthReport) that;
        return (this.getReportId() == null ? other.getReportId() == null : this.getReportId().equals(other.getReportId()))
            && (this.getPatientId() == null ? other.getPatientId() == null : this.getPatientId().equals(other.getPatientId()))
            && (this.getPatientName() == null ? other.getPatientName() == null : this.getPatientName().equals(other.getPatientName()))
            && (this.getReportDate() == null ? other.getReportDate() == null : this.getReportDate().equals(other.getReportDate()))
            && (this.getReportStatus() == null ? other.getReportStatus() == null : this.getReportStatus().equals(other.getReportStatus()))
            && (this.getBloodPressure() == null ? other.getBloodPressure() == null : this.getBloodPressure().equals(other.getBloodPressure()))
            && (this.getBloodPressureStatus() == null ? other.getBloodPressureStatus() == null : this.getBloodPressureStatus().equals(other.getBloodPressureStatus()))
            && (this.getHeartRate() == null ? other.getHeartRate() == null : this.getHeartRate().equals(other.getHeartRate()))
            && (this.getHeartRateStatus() == null ? other.getHeartRateStatus() == null : this.getHeartRateStatus().equals(other.getHeartRateStatus()))
            && (this.getBloodSugar() == null ? other.getBloodSugar() == null : this.getBloodSugar().equals(other.getBloodSugar()))
            && (this.getBloodSugarStatus() == null ? other.getBloodSugarStatus() == null : this.getBloodSugarStatus().equals(other.getBloodSugarStatus()))
            && (this.getCholesterol() == null ? other.getCholesterol() == null : this.getCholesterol().equals(other.getCholesterol()))
            && (this.getCholesterolStatus() == null ? other.getCholesterolStatus() == null : this.getCholesterolStatus().equals(other.getCholesterolStatus()))
            && (this.getBmi() == null ? other.getBmi() == null : this.getBmi().equals(other.getBmi()))
            && (this.getBmiStatus() == null ? other.getBmiStatus() == null : this.getBmiStatus().equals(other.getBmiStatus()))
            && (this.getLifestyleSuggestion1() == null ? other.getLifestyleSuggestion1() == null : this.getLifestyleSuggestion1().equals(other.getLifestyleSuggestion1()))
            && (this.getLifestyleSuggestion2() == null ? other.getLifestyleSuggestion2() == null : this.getLifestyleSuggestion2().equals(other.getLifestyleSuggestion2()))
            && (this.getLifestyleSuggestion3() == null ? other.getLifestyleSuggestion3() == null : this.getLifestyleSuggestion3().equals(other.getLifestyleSuggestion3()))
            && (this.getDietSuggestion1() == null ? other.getDietSuggestion1() == null : this.getDietSuggestion1().equals(other.getDietSuggestion1()))
            && (this.getDietSuggestion2() == null ? other.getDietSuggestion2() == null : this.getDietSuggestion2().equals(other.getDietSuggestion2()))
            && (this.getDietSuggestion3() == null ? other.getDietSuggestion3() == null : this.getDietSuggestion3().equals(other.getDietSuggestion3()))
            && (this.getTrendData() == null ? other.getTrendData() == null : this.getTrendData().equals(other.getTrendData()))
            && (this.getCreatedAt() == null ? other.getCreatedAt() == null : this.getCreatedAt().equals(other.getCreatedAt()))
            && (this.getUpdatedAt() == null ? other.getUpdatedAt() == null : this.getUpdatedAt().equals(other.getUpdatedAt()));
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((getReportId() == null) ? 0 : getReportId().hashCode());
        result = prime * result + ((getPatientId() == null) ? 0 : getPatientId().hashCode());
        result = prime * result + ((getPatientName() == null) ? 0 : getPatientName().hashCode());
        result = prime * result + ((getReportDate() == null) ? 0 : getReportDate().hashCode());
        result = prime * result + ((getReportStatus() == null) ? 0 : getReportStatus().hashCode());
        result = prime * result + ((getBloodPressure() == null) ? 0 : getBloodPressure().hashCode());
        result = prime * result + ((getBloodPressureStatus() == null) ? 0 : getBloodPressureStatus().hashCode());
        result = prime * result + ((getHeartRate() == null) ? 0 : getHeartRate().hashCode());
        result = prime * result + ((getHeartRateStatus() == null) ? 0 : getHeartRateStatus().hashCode());
        result = prime * result + ((getBloodSugar() == null) ? 0 : getBloodSugar().hashCode());
        result = prime * result + ((getBloodSugarStatus() == null) ? 0 : getBloodSugarStatus().hashCode());
        result = prime * result + ((getCholesterol() == null) ? 0 : getCholesterol().hashCode());
        result = prime * result + ((getCholesterolStatus() == null) ? 0 : getCholesterolStatus().hashCode());
        result = prime * result + ((getBmi() == null) ? 0 : getBmi().hashCode());
        result = prime * result + ((getBmiStatus() == null) ? 0 : getBmiStatus().hashCode());
        result = prime * result + ((getLifestyleSuggestion1() == null) ? 0 : getLifestyleSuggestion1().hashCode());
        result = prime * result + ((getLifestyleSuggestion2() == null) ? 0 : getLifestyleSuggestion2().hashCode());
        result = prime * result + ((getLifestyleSuggestion3() == null) ? 0 : getLifestyleSuggestion3().hashCode());
        result = prime * result + ((getDietSuggestion1() == null) ? 0 : getDietSuggestion1().hashCode());
        result = prime * result + ((getDietSuggestion2() == null) ? 0 : getDietSuggestion2().hashCode());
        result = prime * result + ((getDietSuggestion3() == null) ? 0 : getDietSuggestion3().hashCode());
        result = prime * result + ((getTrendData() == null) ? 0 : getTrendData().hashCode());
        result = prime * result + ((getCreatedAt() == null) ? 0 : getCreatedAt().hashCode());
        result = prime * result + ((getUpdatedAt() == null) ? 0 : getUpdatedAt().hashCode());
        return result;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append(getClass().getSimpleName());
        sb.append(" [");
        sb.append("Hash = ").append(hashCode());
        sb.append(", reportId=").append(reportId);
        sb.append(", patientId=").append(patientId);
        sb.append(", patientName=").append(patientName);
        sb.append(", reportDate=").append(reportDate);
        sb.append(", reportStatus=").append(reportStatus);
        sb.append(", bloodPressure=").append(bloodPressure);
        sb.append(", bloodPressureStatus=").append(bloodPressureStatus);
        sb.append(", heartRate=").append(heartRate);
        sb.append(", heartRateStatus=").append(heartRateStatus);
        sb.append(", bloodSugar=").append(bloodSugar);
        sb.append(", bloodSugarStatus=").append(bloodSugarStatus);
        sb.append(", cholesterol=").append(cholesterol);
        sb.append(", cholesterolStatus=").append(cholesterolStatus);
        sb.append(", bmi=").append(bmi);
        sb.append(", bmiStatus=").append(bmiStatus);
        sb.append(", lifestyleSuggestion1=").append(lifestyleSuggestion1);
        sb.append(", lifestyleSuggestion2=").append(lifestyleSuggestion2);
        sb.append(", lifestyleSuggestion3=").append(lifestyleSuggestion3);
        sb.append(", dietSuggestion1=").append(dietSuggestion1);
        sb.append(", dietSuggestion2=").append(dietSuggestion2);
        sb.append(", dietSuggestion3=").append(dietSuggestion3);
        sb.append(", trendData=").append(trendData);
        sb.append(", createdAt=").append(createdAt);
        sb.append(", updatedAt=").append(updatedAt);
        sb.append(", serialVersionUID=").append(serialVersionUID);
        sb.append("]");
        return sb.toString();
    }
}